package netTest;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class DecodeAndEncodeTest {
    public static void main(String[] args) throws UnsupportedEncodingException {

        //使用特定的编码方案解码application/x-www-form-urlencoded字符串。 所提供的编码用于确定由“ %xy ”形式的任何连续序列表示哪些字符。
        //注意： World Wide Web Consortium Recommendation规定应使用UTF-8。 不这样做可能会引起不兼容。
        String decode = URLDecoder.decode("%E4%BD%A0%E5%A5%BD","UTF-8");
        System.out.println(decode);
        /*
        此类包含将String转换为application/x-www-form-urlencoded MIME格式的静态方法。 有关HTML表单编码的更多信息，请参阅HTML specification 。
        编码字符串时，适用以下规则：
        “ a ”至“ z ”，“ A ”至“ Z ”和“ 0 ”至“ 9 ”保持不变。
        特殊字符“ . ”，“ - ”，“ * ”和“ _ ”保持不变。
        空格字符“”被转换为加号“ + ”。
        所有其他字符都不安全，并且首先使用一些编码方案将其转换为一个或多个字节。 然后每个字节由3个字符串“ %xy ”表示，其中xy是字节的两位十六进制表示。 推荐使用的编码方案是UTF-8。 但是，出于兼容性原因，如果未指定编码，则使用平台的默认编码。
         */
        //每个中文占两个字节，16位二进制，所以转化为%XX形式
        String encode = URLEncoder.encode("你好","GBK");
        System.out.println(encode);
        System.out.println(URLDecoder.decode(encode,"GBK"));
    }
}
